package com.onLineCar.dispatch.rpc.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author Xinke_Li
 * @since 2023-12-11
 */
@Data
@Accessors(chain = true)
public class TblOrder {


    /**
     * 订单号
     */
    private String orderNumber;

    /**
     * 乘客id
     */
    private Long passengerInfoId;

    /**
     * 乘客电话
     */
    private String passengerPhone;

    /**
     * 司机id
     */
    private Integer driverId;


    /**
     * 司机状态
     1：未上线
     2：以上线
     3：运送乘客中
     4：空闲
     */
    private Integer driverStatus;

    /**
     * 司机电话
     */
    private String driverPhone;

    /**
     * 车辆id
     */
    private Integer carId;

    /**
     * 车牌号
     */
    private String plateNumber;

    /**
     * 乘客下单起点经度
     */
    private String startLongitude;

    /**
     * 乘客下单起点纬度
     */
    private String startLatitude;

    /**
     * 起点名称
     */
    private String startAddress;

    /**
     * 终点地址名称
     */
    private String endAddress;

    /**
     * 乘客下单时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date startTime;

    /**
     * 订单开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date orderStartTime;

    /**
     * 乘客下单终点经度
     */
    private String endLongitude;

    /**
     * 乘客下单终点纬度
     */
    private String endLatitude;

    /**
     * 司机抢单时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date driverGrabTime;

    /**
     * 接到乘客时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date receivePassengerTime;

    /**
     * 乘客下车时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date passengerGetoffTime;

    /**
     * 乘客下车经度
     */
    private String passengerGetoffLongitude;

    /**
     * 乘客下车纬度
     */
    private String passengerGetoffLatitude;

    /**
     * 叫车订单类型1：实时订单 2：预约订单
     */
    @TableField(value = "service_type")
    private Integer serviceType;

    /**
     * 订单状态
     * 订单状态 0：订单开始 1：司机接单  2：司机到达乘客起点
     * 3：乘客上车，司机开始行程
     *4：到达目的地，行程结束，未支付 5：发起收款 6: 支付完成
     * 7.乘客取消订单 10:去接乘客 11:待派订单
     */
    private Integer status;

    /**
     * 乘客是否评价 0：未评价 1：已评价
     */
    private Integer isEvaluate;

    /**
     * 1:余额 2.微信  3.支付宝
     */
    private Integer payType;

    /**
     * 是否已支付 0：未支付 1：已支付
     */
    private Integer isPaid;

    /**
     * 是否取消0：未取消  1：已取消
     */
    private Integer isCancel;

    /**
     * 调帐状态0：未调帐  1:调账中  2.调账完毕
     */
    private Integer isAdjust;

    /**
     * 是否疑义订单 0：否 1：是
     */
    private Integer isDissent;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date updateTime;

    /**
     * 预约用车时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date timeInCar;

    /**
     * 订单金额
     */
    private BigDecimal orderMoney;

    /**
     * 车辆级别
     * 1-豪华级
     * 2-紧凑级
     * 3-中等急
     * 4-低档级
     */
    private Integer vehicleLevel;

}
